package com.sbl.utils;

import org.springframework.core.convert.converter.Converter;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 *  自定义类型转换器：应该是自动生效，无法解析日期的时候，会调用这个转换器来解析
 *          将字符串转为日期类型
 *          2020-02-01 可以Ok；还是自己写的转换器问题
 *  =》 Spring 框架集成了时间类型转换器 ；只需要配置就可以了，不要自己像下面这个再写了  https://juejin.im/post/5e041b39f265da33ca401ff5#heading-43
 *  <mvc:annotation-driven>
 *     <mvc:message-converters>
 *         <ref bean="httpMessageConverter"/>
 *     </mvc:message-converters>
 * </mvc:annotation-driven>
 * <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" id="httpMessageConverter">
 *     <property name="objectMapper">
 *         <bean class="com.fasterxml.jackson.databind.ObjectMapper">
 *             <property name="dateFormat">
 *                 <bean class="java.text.SimpleDateFormat">
 *                     <constructor-arg name="pattern" value="yyyy-MM-dd HH:mm:ss"/>
 *                 </bean>
 *             </property>
 *             <property name="timeZone" value="Asia/Shanghai"/>
 *         </bean>
 *     </property>
 * </bean>
 *
 */
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
public class StringToDateConvert implements Converter<String,Date> {

    /**
     * source 为传入的字符串
     * @param source
     * @return
     */
    @Override
    public Date convert(String source) {
        if (source==null){
            throw new RuntimeException("请传入数据");
        }
        DateFormat dt = new SimpleDateFormat("yyyy-mm-dd") ;
        try {
            //将字符串转为日期
            return dt.parse(source);
        } catch (Exception e) {
            throw new RuntimeException("传入的数据转化有误");
        }

    }
}
